//#include <iostream>
//#include <cstring>
//#include <algorithm>
//#include <vector>
//#include <cmath>
//#include <unordered_map>
//#include <unordered_set>
//#include <map>
//#include <set>
//#include <queue>
//#include <stack>
//#include <deque>
//#include <functional>
//#include <climits>
//
//#define quickio ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
//#define endl "\n"
//
//using namespace std;
//typedef long long ll;
//
//struct node
//{
//	int x, y;
//};
//
////vector<struct node>vec;
//
//int n, m;
//int dir[4][2] = { {0, 1}, {0, -1}, {1, 0}, {-1, 0} };
//int book[105][105];
//char board[105][105];
//int res;
//
//void backtraking(/*vector<string>& vec, */int x, int y)
//{
//	book[x][y] = 1;
//	if (x == n && y == m)
//	{
//		//cout << "Yes" << endl;
//		res = 1;
//		return;
//	}
//
//	for (int i = 0; i < 4; i++)
//	{
//		int xx = x + dir[i][0];
//		int yy = y + dir[i][1];
//
//		if (book[xx][yy])
//			continue;
//
//		if (xx <= 0 || yy <=0 || xx > n || yy > m)
//		{
//			book[xx][yy] = 1;
//			continue;
//		}
//
//		if (board[xx][yy] == '.')
//		{
//			book[xx][yy] = 1;
//			backtraking(/*vec, */xx, yy);
//		}
//	}
//	//cout << "No" << endl;
//}
//
//int main()
//{
//	cin >> n >> m;
//	for (int i = 1; i <= n; i++)
//	{
//		for (int j = 1; j <= m; j++)
//		{
//			cin >> board[i][j];
//		}
//	}
//	backtraking(/*vec1, */1, 1);
//	if (res)
//		cout << "Yes" << endl;
//	else
//		cout << "No" << endl;
//	return 0;
//}